/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */

package lfc_exercicio_01;

import java.io.IOException;

/**
 *
 * @author Cayke
 */
public class Analisador {
    
    static int lookahead;
    
    /**
     *
     * @throws IOException
     */
    public Analisador() throws IOException
    {
        lookahead = System.in.read();   
    }
    
    void AnalisaToken() throws IOException
    {
       AnaliseDigito();
       while(true)
       {
           if(lookahead == '+')
           {
               // Analisa se o valor é realmente um caracter e pega o proximo digito.
               VerificaToken('+');
               AnaliseDigito();
               System.out.write('+');
           }
           else if(lookahead == '-')
           {
               // Analisa se o valor é realmente um caracter e pega o proximo digito.
               VerificaToken('-');
               AnaliseDigito();
               System.out.write('-');
           }
           else return;
       
       }
    
    }
    void AnaliseDigito() throws IOException            
    {   //Verifica se o valor digitado é Digito, ele passa como (char) pois o "lookahead" é int e pode ocorrer d ser um caracter especial
        if(Character.isDigit((char)lookahead)) 
        {
            System.out.write((char)lookahead);
            VerificaToken(lookahead);       
        }
        else
        {
            throw new Error("syntax error");
        }
            
    }
    void VerificaToken(int t) throws IOException
    {
        if(lookahead == t)
        {
            lookahead = System.in.read();
        }
        else
        {
            throw new Error("syntax error");
        }
    }
    
}
